Processing dns queries to identify pre-processing information

ABSTRACT

Systems and methods for processing a DNS query to identify and implement pre-processing information by a DNS server component in anticipation of a corresponding content request from a client computing device are provided. The pre-processing information can correspond to identification of content to be preloaded or other actions to be implemented by one or more computing devices in association with an anticipated client content request. Based on identification of the content or future actions, a DNS server component can provide the pre-processing information to one or more computing devices, such as computing devices of a CDN service provider and/or an original content provider, in advance of a corresponding request for content from the client computing device in order to improve performance associated with responding to the client request.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/493,839, entitled PROCESSING DNS QUERIES TO IDENTIFY PRE-PROCESSINGINFORMATION and filed on Jun. 11, 2012, the disclosure of which isincorporated herein by reference.

BACKGROUND

Generally described, computing devices and communication networks can beutilized to exchange information. In a common application, a computingdevice can request content from another computing device via thecommunication network. For example, a user at a personal computingdevice can utilize a software browser application to request a Web pagefrom a server computing device via the Internet. In such embodiments,the user computing device can be referred to as a client computingdevice and the server computing device can be referred to as a contentprovider.

Content providers are generally motivated to provide requested contentto client computing devices often with consideration of efficienttransmission of the requested content to the client computing deviceand/or consideration of a cost associated with the transmission of thecontent. For larger scale implementations, a content provider mayreceive content requests from a high volume of client computing deviceswhich can place a strain on the content provider's computing resources.Additionally, the content requested by the client computing devices mayhave a number of components, which can further place additional strainon the content provider's computing resources.

With reference to an illustrative example, a requested Web page, ororiginal content, may be associated with a number of additionalresources, such as images or videos, which are to be displayed with theWeb page. In one specific embodiment, the additional resources of theWeb page are identified by a number of embedded resource identifiers,such as uniform resource locators (“URLs”). In turn, software on theclient computing devices typically processes embedded resourceidentifiers to generate requests for the content. Often, the resourceidentifiers associated with the embedded resources reference a computingdevice associated with the content provider such that the clientcomputing device would transmit the request for the additional resourcesto the referenced content provider computing device. Accordingly, inorder to satisfy a content request, the content provider would provideclient computing devices data associated with the Web page as well asthe data associated with the embedded resources.

Some content providers attempt to facilitate the delivery of requestedcontent, such as Web pages or resources identified in Web pages, throughthe utilization of a content delivery network (“CDN”) service provider.A CDN service provider typically maintains a number of computing devicesin a communication network that can maintain content from variouscontent providers. In turn, content providers can instruct, or otherwisesuggest to, client computing devices to request some, or all, of thecontent provider's content from the CDN service provider's computingdevices.

As with content providers, CDN service providers are also generallymotivated to provide requested content to client computing devices oftenwith consideration of efficient transmission of the requested content tothe client computing device and/or consideration of a cost associatedwith the transmission of the content. Accordingly, CDN service providersoften consider factors such as latency of delivery of requested contentin order to meet service level agreements or to generally improve thequality of delivery service.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same become betterunderstood by reference to the following detailed description, whentaken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram illustrative of content delivery environmentincluding a number of client computing devices, a content provider, anda content delivery network (CDN) service provider;

FIG. 2 is a block diagram of the content delivery environment of FIG. 1illustrating the registration of a content provider with a CDN serviceprovider;

FIG. 3 is a block diagram of the content delivery environment of FIG. 1illustrating the generation of resource requests by a client computingdevice to a content provider;

FIG. 4A is a block diagram of the content delivery environment of FIG. 1illustrating the generation of DNS queries by a client computing deviceto a DNS server component;

FIG. 4B is a block diagram of the content delivery environment of FIG. 1illustrating the implementation of pre-processing information by a DNSserver component;

FIG. 5 is a block diagram of the content delivery environment of FIG. 1illustrating the generation of resource requests by a client computingdevice to a CDN service provider;

FIG. 6 is a flow diagram illustrative of a DNS query processing routineimplemented by a DNS server component; and

FIG. 7 is a flow diagram illustrative of a subroutine for implementationof pre-processing actions based on a DNS query as provided in the flowdiagram of FIG. 6.

DETAILED DESCRIPTION

Generally described, the present disclosure is directed to processing ofa domain name service (“DNS”) query from a client computing device by aDNS server component, such as one or more DNS server components providedby a content delivery network (“CDN”) service provider or by any otherDNS service provider. Specifically, aspects of the disclosure will bedescribed with regard to processing a DNS query to identify andimplement pre-processing information by a DNS server component inanticipation of a corresponding resource request from a client computingdevice to a computing device identified by the DNS server componentresponsive to the DNS query. Illustratively, the pre-processinginformation can correspond to identification of content to beaccelerated or other actions to be implemented by one or more computingdevices in association with an anticipated content request. Based onidentification of the content or future actions, a DNS server componentcan provide the pre-processing information to one or more computingdevices, such as computing devices of a CDN service provider and/or anoriginal content provider, in advance of a corresponding request forcontent from the client computing device in order to improve performanceassociated with responding to this request.

Although various aspects of the disclosure will be described with regardto illustrative examples and embodiments, one skilled in the art willappreciate that the disclosed embodiments and examples should not beconstrued as limiting. For example, the present disclosure may bedescribed with regard to request routing services provided by a serviceprovider, such as a CDN service provider or DNS service provider, thatmay or may not provide additional services and functionality includingnetwork-based storage services, caching services, application hosting,or other services. Accordingly, use of the term “service provider” isnot intended to be limited to any particular type of service provider,whether discussed or described in examples. Accordingly, one skilled inthe relevant art will appreciate that a service provider need notprovide all, or any, of the additional services or functionality thatmay be associated with some service providers, such as a CDN serviceprovider.

FIG. 1 is a block diagram illustrative of content delivery environment100 for managing registration of a content provider with a serviceprovider, such as a CDN service provider, and subsequent processing ofat least a portion of content requests on behalf of the contentprovider. As illustrated in FIG. 1, the content delivery environment 100includes a number of client computing devices 102 (generally referred toas clients) for requesting content from a content provider and/or a CDNservice provider 106. In an illustrative embodiment, the clientcomputing devices 102 can correspond to a wide variety of computingdevices including personal computing devices, laptop computing devices,hand-held computing devices, terminal computing devices, mobile devices,wireless devices, various electronic devices and appliances and thelike. In an illustrative embodiment, the client computing devices 102include necessary hardware and software components for establishingcommunications over a communication network 110, such as a wide areanetwork or local area network. For example, the client computing devices102 may be equipped with networking equipment and browser softwareapplications that facilitate communications via the Internet or anintranet.

Illustratively, at least some of the client computing devices 102utilize a DNS resolver component 108, such as a DNS name server, thatreceives DNS queries from a client computing device 102 and thengenerates the DNS queries attributed to the client computing device, oron behalf of the client computing device. In one embodiment, the DNSresolver component 108 may be a local DNS component provided by anenterprise network to which the client computing device 102 belongs. Inanother embodiment, the local DNS resolver component 108 may be providedby an Internet Service Provider (“ISP”) that provides the communicationnetwork connection to the client computing device 102. In embodiments inwhich the client computing devices 102 utilize a DNS resolver component108, one skilled in the relevant art will appreciate that the DNSqueries generated on behalf of the client computing devices would beassociated with the IP address of the DNS resolver component 108 inaccordance with traditional networking protocols.

The content delivery environment 100 can also include a content provider104 in communication with the one or more client computing devices 102via the communication network 110. The content provider 104 illustratedin FIG. 1 corresponds to a logical association of one or more computingdevices associated with a content provider. Specifically, the contentprovider 104 can include a web server component 112 corresponding to oneor more server computing devices for obtaining and processing requestsfor content (such as Web pages) from the client computing devices 102.The content provider 104 can further include an origin server component114 and associated storage component 116 corresponding to one or morecomputing devices for obtaining and processing requests for networkresources. One skilled in the relevant art will appreciate that thecontent provider 104 can be associated with various additional computingresources, such additional computing devices for administration ofcontent and resources and the like. Additionally, although the originserver component 114 and associated storage component 116 are logicallyassociated with the content provider 104, the origin server component114 and associated storage component 116 may be geographicallydistributed throughout the communication network 110 in a manner to bestserve various demographics of client computing devices 102.

Although not illustrated in FIG. 1, the content provider 104 can beassociated with a number of additional or supplemental components tofacilitate interaction with client computing devices 102 or serviceproviders. For example, a content provider 104 may maintain one or moreDNS name server components that are operative to receive DNS queriesrelated to registered domain names associated with the content provider104. The one or more DNS name servers can be authoritative to resolveclient computing device DNS queries corresponding to the registereddomain names of the content provider 104. The content provider 104 canalso maintain additional storage components, such as proxy servers, orutilize network storage service providers to maintain at least a portionof the content/resources provided to the client computing devices 102.

With continued reference to FIG. 1, the content delivery environment 100can further include a service provider, generally referred to as the CDNservice provider 106, in communication with the one or more clientcomputing devices 102 and the content provider 104 via the communicationnetwork 110. The CDN service provider 106 illustrated in FIG. 1corresponds to a logical association of one or more computing devicesassociated with a service provider. Specifically, the CDN serviceprovider 106 can include a number of Point of Presence (“POP”) locations118, 124 that correspond to nodes on the communication network 110. EachPOP 118, 124 includes a DNS component 120, 126 made up of a number ofDNS server computing devices for resolving DNS queries from the clientcomputers 102. Each POP 118, 124 also optionally includes a resourcecache component 122, 128 made up of a number of cache server computingdevices for storing resources from content providers or network storageproviders and transmitting various requested resources to various clientcomputers 102. The DNS components 120, 126 and the resource cachecomponents 122, 128 may further include additional software and/orhardware components that facilitate communications including, but notlimited, load balancing or load sharing software/hardware components.

In an illustrative embodiment, the DNS component 120, 126 and resourcecache component 122, 128 are considered to be logically grouped,regardless of whether the components, or portions of the components, arephysically separate. Additionally, although the POPs 118, 124 areillustrated in FIG. 1 as logically associated with the CDN serviceprovider 106, the POPs will be geographically distributed throughout thecommunication network 110 in a manner to best serve various demographicsof client computing devices 102.

Additionally, one skilled in the relevant art will appreciate that theCDN service provider 106 can be associated with various additionalcomputing resources, such additional computing devices foradministration of content and resources, and the like. Even further, thecomponents of the CDN service provider 106 can be managed by the same ordifferent entities. One skilled in the relevant art will also appreciatethat the components and configurations provided in FIG. 1 areillustrative in nature. Accordingly, additional or alternativecomponents and/or configurations, especially regarding the additionalcomponents, systems, and subsystems for facilitating communications maybe utilized.

With continued reference to FIG. 1, the content delivery environment 100can further include another service provider, generally referred to as aDNS service provider 134, in communication with the one or more clientcomputing devices 102, the content provider 104, and the CDN serviceprovider 106 via the communication network 110. The DNS service provider134 illustrated in FIG. 1 corresponds to a logical association of one ormore computing devices associated with a service provider. Specifically,the DNS service provider 134 can include one or more DNS components 136made up of a number of DNS server computing devices for resolving DNSqueries from the client computers 102. Illustratively, the DNS serviceprovider 134 would not necessarily include any additional functionalityand may provide a DNS request routing service in lieu of any DNS requestrouting functionality provided by another service provider, such as theCDN service provider 106.

With reference now to FIGS. 2-6, the interaction between variouscomponents of the content delivery environment 100 of FIG. 1 will beillustrated. For purposes of the example, however, the illustration hasbeen simplified such that many of the components utilized to facilitatecommunications are not shown. One skilled in the relevant art willappreciate that such components can be utilized and that additionalinteractions would accordingly occur without departing from the spiritand scope of the present disclosure.

With reference to FIG. 2, an illustrative interaction for the optionalregistration of a content provider 104 with a CDN service provider 106for hosting content on behalf of the content provider 104 will bedescribed. As illustrated in FIG. 2, the CDN service provider contentregistration process begins with registration of the content provider104 with the CDN service provider 106. In an illustrative embodiment,the content provider 104 utilizes a registration application programinterface (“API”) to register with the CDN service provider 106 suchthat the CDN service provider 106 can provide content on behalf of thecontent provider 104. Illustratively, the registration API can includethe identification of the origin server 114 of the content provider 104that may provide requested resources to the CDN service provider 106. Inaddition or alternatively, the registration API can include the contentto be stored by the CDN service provider 106 on behalf of the contentprovider 104. Additionally, the content provider 104 can specify one ormore network storage providers (not illustrated) that may act as anorigin server for the content provider 104.

One skilled in the relevant art will appreciate that upon identificationof appropriate origin servers 114, the content provider 104 can begin todirect requests for content from client computing devices 102 to the CDNservice provider 106. Specifically, in accordance with DNS routingprinciples, a client computing device request corresponding to aresource identifier would eventually be directed toward a POP 118, 124associated with the CDN service provider 106. In the event that theresource cache component 122, 126 of a selected POP does not have a copyof a resource requested by a client computing device 102, the resourcecache component will request the resource from the origin server 114previously registered by the content provider 104.

With continued reference to FIG. 2, upon receiving the registration API,the CDN service provider 106 obtains and processes the registrationinformation. In an illustrative embodiment, the CDN service provider 106can then generate additional information that will be used by the clientcomputing devices 102 as part of the content requests. The additionalinformation can include, without limitation, client identifiers, such asclient identification codes, content provider identifiers, such ascontent provider identification codes, executable code for processingresource identifiers, such as script-based instructions, and the like.One skilled in the relevant art will appreciate that various types ofadditional information may be generated by the CDN service provider 106and that the additional information may be embodied in any one of avariety of formats.

The CDN service provider 106 returns an identification of applicabledomains for the CDN service provider (unless it has been previouslyprovided) and any additional information to the content provider 104. Inturn, the content provider 104 can then process the stored content withcontent provider specific information. In one example, as illustrated inFIG. 2, the content provider 104 translates resource identifiersoriginally directed toward a domain of the origin server 114 to a domaincorresponding to the CDN service provider 106. The translated URLs areembedded into requested content in a manner such that DNS queries forthe translated URLs will resolve to a DNS server corresponding to theCDN service provider 106 and not a DNS server corresponding to thecontent provider 104.

Generally, the identification of the resources embedded in a baserequested resource (e.g., a Web page) and originally directed to thecontent provider 104 will be in the form of resource identifiers thatcan be processed by the client computing device 102, such as through abrowser software application. In an illustrative embodiment, theresource identifiers can be in the form of a uniform resource locator(“URL”). Because the resource identifiers included in the requestedcontent directed to the content provider, the resource identifiers canbe referred to generally as the “content provider URL.” For purposes ofan illustrative example, the content provider URL can identify a domainof the content provider 104 (e.g., contentprovider.com), a name of theresource to be requested (e.g., “resource.xxx”) and a path where theresource will be found (e.g., “path”). In this illustrative example, thecontent provider URL has the form of:

http://www.contentprovider.com/path/resource.xxx

During an illustrative translation process, the content provider URL ismodified such that requests for the resources associated with thetranslated URLs resolve to a POP associated with the CDN serviceprovider 106. In one embodiment, the translated URL identifies thedomain of the CDN service provider 106 (e.g., “cdnprovider.com”), thesame name of the resource to be requested (e.g., “resource.xxx”) and thesame path where the resource will be found (e.g., “path”). Additionally,in some embodiments, as will also be described further below, thetranslated URL can include additional processing information (e.g.,“additional information”) in a DNS portion of the URL. The DNS portionof the URL includes information that is accessible by a DNS serverduring DNS query processing, while a path portion of the URL is nottraditionally accessible or used during DNS query processing. Thetranslated URL would have the form of:

http://additional_information.cdnprovider.com/path/resources.xxx

In the foregoing illustrative embodiment, the DNS portion of thetranslated URL, which is used by a DNS server during DNS queryprocessing, comprises “additional-_information.cdnprovider.com”, whilethe path portion of the translated URL comprises the“/path/resources.xxx” portion of the above URL.

With reference now to FIG. 3, after completion of the registration andtranslation processes illustrated in FIG. 2, a client computing device102 generates a content request for the base requested resource that isreceived and processed by the content provider 104, such as through theWeb server 112. In accordance with an illustrative embodiment, therequest for content can be in accordance with common network protocols,such as the hypertext transfer protocol (“HTTP”). Upon receipt of thecontent request, the content provider 104 identifies and returns theappropriate responsive content. In an illustrative embodiment, therequested content can correspond to a Web page that is displayed on theclient computing device 102 via the processing of information, such ashypertext markup language (“HTML”), extensible markup language (“XML”),and the like. The requested content can also include a number ofembedded resource identifiers that corresponds to resource objects thatshould be obtained by the client computing device 102 as part of theprocessing of the requested content. The embedded resources cancorrespond to multi-media content, such as images, videos, text, etc.that will be processed by the client computing devices 102 and renderedon an output device.

With reference now to FIG. 4A, in one embodiment, upon receipt of therequested content as shown in FIG. 2, the client computing device 102processes the received information in a manner that causes the clientcomputing device 102 to request one or more embedded resources from theCDN service provider 106. As illustrated in FIG. 4A, in accordance withtraditional communication protocols, the client computing device 102would first transmit a DNS query to request an IP address of a computingdevice corresponding to each embedded resource.

By way of example, in accordance with traditional DNS request routingprinciples, resolving a DNS query for the embedded resource URL,http://www.CDNserviceprovider.com/path/resource.xxx, would first includethe partial resolution of the URL by identification of a DNS serverauthoritative to the “.” and the “com” portions of the URL. The issuanceof DNS queries corresponding to the “.” and the “com” portions of a URLare well known and have not been illustrated. After partially resolvingthe embedded resource URL for the “.” and “com” portions of the URL, theresolution of the DNS query for the embedded resource URL would theninclude the identification of the DNS server corresponding to the“.CDNserviceprovider” portion of the URL, such as DNS server component120 of POP 118 or a DNS server component 136 of the DNS service provider134. In the embodiment illustrated in FIG. 4A, the DNS server component120 of POP 118 has been identified as corresponding to the“.CDNserviceprovider” portion of the URL.

As further illustrated in FIG. 4A, the receiving DNS server component120 obtains the DNS query from the client computing device 102 andprocesses the DNS query. In accordance with traditional networkingprinciples, because the DNS server component 120 is authoritative forthe URL, the DNS server component 120 thus resolves the query byproviding the client computing device 102 with the identification of anIP address that can provide the corresponding requested content, such asa resource cache component 128 of the POP 124. In addition, inaccordance with the present disclosure, the DNS server component 120also processes the DNS query to identify pre-processing information,such as identification of content to be accelerated or other actions tobe implemented by one or more computing devices in association with ananticipated content request from the client computing device 102, aswill be further described below.

In one embodiment, the DNS server component 120 may identify theembedded resource that will be requested by the client computing device120 in association with the DNS query. Identification of the embeddedresource may be determined by parsing information from a DNS portion ofthe resource identifier corresponding to the DNS query. For example,identification of the embedded resource may be included as theadditional information in the DNS portion of the resource identifier. Ifthe embedded resource is an image, such as image1.jpeg, the resourceidentifier would include this information as prepended information inthe DNS portion of the resource identifier as follows:

http://image1.jpeg.D1.cdnprovider.com/path/resource.xxx

As another example, if the embedded resource is a video, the resourceidentifier could include information identifying the video, as well asother related information such as resolution, in the DNS portion of theresource identifier as follows:

http://videol.avi.resolution.D1.cdnprovider.com/path/resource.xxx

Alternatively, the information about the video file could be combined orotherwise referenced via a lookup, such as in the following resourceidentifier:

http://videolookupcode_x.cdnprovider.com/path/resource.xxx

Other information may also be included in the DNS portion of the aboveURLs, such as identification of the original content provider, D1,associated with the requested content. Accordingly, in one embodiment,the DNS server component 120 may alternatively or additionally parse theDNS query to obtain original content provider information.

In one embodiment, the additional information included in the DNSportion of the resource identifier can be included by the contentprovider 104 as a part of the translation process described above inreference to FIG. 2. In another embodiment, a client computing devicecould dynamically generate one or more modified resource identifiersitself. For example, the client computing device may identify that itrequires a resource to be provided with a particular resolution suitablefor the client computing device and, as a result, dynamically modify theresource identifier to include the necessary additional information inthe DNS portion of the resource identifier to enable pre-processing ofthe resource at the particular resolution. In this embodiment, theclient computing device is modified to include a module for dynamicallytranslating embedded resources prior to issuing corresponding DNSqueries.

Returning to the DNS query processing of FIG. 4A, and as will bedescribed in further detail below in reference to FIG. 4B, the DNSserver component 120 may identify the pre-processing information forprovision to one or more computing devices that may subsequently processthe pre-processing information to identify and take one or more actions.Alternatively, the pre-processing information identified by the DNSserver component may also include identification of the one or moreactions and instructions for the one or more computing devices toimplement the one or more actions.

For example, in one embodiment, the DNS server component 120 simplyidentifies the embedded resource and provides information regarding theanticipated request for the embedded resource to the cache servercomponent that the DNS server component 120 identified responsive to theclient's DNS query, i.e., the resource cache component 128 of the CDNservice provider 106. In this case, the cache server component 120 canidentify whether the embedded resource is readily available in cache orwhether it will need to be preloaded by virtue of a request to theorigin server 114. In another embodiment, the DNS server component 120can both identify the embedded resource and instruct the CDN serviceprovider 106 and/or content provider to take a particular action, suchas preloading the embedded resource, if it is not available, at the CDNservice provider in anticipation of the request for the embeddedresource from the client computing device 102.

In another embodiment, the DNS server component 120 may simply identifythat a request for a resource, such as an embedded resource, is going tobe made by the client and that a communications channel, such as a TCPconnection, will need to be opened with an origin server to ultimatelyobtain the resource. For example, the resource may not be readilyavailable at the CDN service provider to which the resource request willbe directed as a result of the resolution of the DNS query and, in thiscase, the DNS server component 120, may identify that the action ofopening a communications channel between the CDN service provider 106and the origin server 114 will be required. The DNS server component120, as will be further described below in reference to FIG. 4B,provides this pre-processing information to either the resource cachecomponent that will receive the resource request and/or the originalcontent provider 104 for purposes of one or both of those computingdevices opening a communications channel in anticipation of the resourcerequest. In other embodiments, instead of opening a communicationschannel, the pre-processing information may be to keep a communicationschannel open, to reset a time to live (TTL) associated with acommunications channel, to open multiple communications channels inorder to handle a large content request, and the like.

In yet another embodiment, the DNS server component 120 may identifythat a request for content which resides at the resource cache component128 will be made, but that the requested content will need to beconverted into a different format. The DNS server component 120 may thusdetermine that the requested content will need to be transcoded beforeprovision to the client computing device 106 and provide thispre-processing information to the resource cache component 128 prior tothe client content request as will also be further described inreference to FIG. 4B below. The pre-processing information can compriseinstructions to complete the identified action or simply the relevantinformation for the receiving computing device to identify the action tobe taken in anticipation of the particular client content request.

Turning now to FIG. 4B, the DNS server component 120 implements theidentified pre-processing information determined from the DNS query asdiscussed above in reference to FIG. 4A. As a result, the DNS servercomponent 120 provides the identified pre-processing information to theappropriate computing device, such as the original content provider 104or another identified server component for resolving the anticipatedclient resource request, i.e., the resource cache component 128 of theCDN service provider 106 in accordance with the current example, orboth. The content provider 104 and/or the resource cache component 128then processes the received pre-processing information to take action inadvance of the anticipated client resource request. This action mayinclude opening a communications channel, preloading the requestedcontent at the resource cache component 128 if it is not otherwiseavailable, commencing transcoding of content into an appropriate formatfor the anticipated resource request, and the like. Ultimately, theaction can be any action that would help speed up processing of ananticipated resource request from a client computing device 102. Again,as similarly set forth above, the action may be identified by the DNSserver component 120 and provided to the content provider 104 and/or theresource cache component 128 in the form of instructions to implementthe action. Alternatively, the pre-processing information may simplyinclude the necessary information for the content provider 104 and/orresource cache component 128 to determine the necessary pre-processingaction required in anticipation of the client resource request. As shownin FIG. 4B, the processing of the pre-processing information at thecontent provider 104 and/or resource cache component 128 may alsorequire request processing between the content provider 104 and theresource cache component 128.

For example, in one embodiment, the DNS server component 120 may haveidentified an embedded resource that will be requested by the clientcomputing device 120 in association with processing the DNS query. Inone embodiment, the DNS server component 120 implements this identifiedpre-processing information by sending instructions to the resource cachecomponent 128 to preload the identified embedded resource if it is notalready available at the resource cache component 128. For example, thisresult may be common for dynamic content that is not typically cached atthe CDN service provider 106, as opposed to static content that is oftenalready cached and available to be immediately provided in response to aresource request from a client computing device. As a result, theresource cache component 128 may request the opening of a communicationschannel with the content provider 104 in anticipation of the resourcerequest from the client computing device 102. In addition, the resourcecache component 128 may also request preloading of the identifiedembedded resource at the resource cache component 128 from the originserver 114. In other embodiments, the implementation of thispre-processing information may result in the DNS server component 120instead directly instructing the content provider 104 to open acommunications channel with the resource cache component 128,particularly where the DNS server component 120 can identify theoriginal content provider 104, such as through parsing information in aDNS portion of a corresponding DNS query.

In another embodiment, the implementation of the pre-processinginformation may simply include identification that a communicationschannel will need to be opened in anticipation of a resource requestfrom the client computing device and thus result in the DNS servercomponent 120 sending instructions to the content provider 104 and/orresource cache component to open a communications channel. Thecommunications channel may be a channel between the origin server 114and the resource cache component 128. The content provider 104 and/orthe resource cache component 128, in turn, process the pre-processinginformation and take the corresponding anticipatory action, which inthis embodiment is opening of a communications channel in anticipationof the client resource request.

In yet another embodiment, the implementation of the pre-processinginformation may involve identifying that an embedded resourcecorresponding to an anticipated request from the client computing device102 needs to be in a particular format and thus result in the DNS servercomponent 120 sending instructions to the resource cache component 128,for example, to start conversion of the embedded resource, such as avideo file, into an appropriate format for responding to the anticipatedclient resource request.

With reference now to FIG. 5, upon receipt of the resolved DNS query,the client computing device 102 transmits a request for the content tothe identified IP address corresponding to the resource cache componentthat can provide the requested content, i.e., resource cache component128 in accordance with the foregoing embodiment. In accordance with anembodiment utilizing the hypertext transfer protocol (“HTTP”), therequest of a resource can correspond to a GET request transmitted by theclient computing device 102 to an IP address associated with CDN serviceprovider 106. In this embodiment, the content request is received andprocessed by the resource cache component 128. Responsive to thisrequest, the resource cache component 128 provides the resource to theclient computing device 102. Upon receipt, the requested resource isprocessed by the browser application on the client computing device 102as appropriate. It will be appreciated by one skilled in the relevantart that a selected resource cache component 122, 128 can either providethe requested resource if it is available or attempt to obtain therequested resource from another source, such as a peer cache servercomputing device or the origin server 114 of the content provider 104.

With reference now to FIG. 6 one embodiment of a routine 600 implementedby a DNS server component 120, 126 of the CDN service provider 106 or aDNS server component 136 of a DNS service provider 134 for processingDNS queries to identify pre-processing information will be described.One skilled in the relevant art will appreciate that actions/stepsoutlined for routine 600 may be implemented by one or many computingdevices/components that are associated with the CDN service provider 106or DNS service provider 134. Accordingly, routine 600 has been logicallyassociated as being generally performed by a DNS server component of theCDN service provider 106 or DNS service provider 134, and thus thefollowing illustrative embodiments should not be construed as limiting.

At block 602, the DNS server component obtains a DNS query correspondingto a resource identifier. As previously discussed, the resourceidentifier can be a URL that has been embedded in content requested bythe client computing device 102 and previously provided by the contentprovider 104 and/or otherwise modified by a client computing device toinclude additional information particular to the client computingdevice. At block 604, the DNS server component identifies pre-processinginformation associated with the DNS query and/or the correspondingresource identifier. As set forth above, the pre-processing informationmay include identification of content to be preloaded or otheranticipated actions required to respond to an anticipated client contentrequest.

At block 606, the DNS server component resolves the DNS query bydetermining an IP address of a computing device that can provide therequested content, such as a resource cache component 128 of the POP124, and transmitting the IP address to the client computing device 102.It should be appreciated that blocks 604 and 606 are both associatedwith processing of the DNS query and, as such, could be performed in anyorder or simultaneously.

At block 608, the DNS server component performs a subroutine forimplementing one or more pre-processing actions associated with theidentified pre-processing information. As set forth above, theimplementation of pre-processing information may include providing theidentified pre-processing information to the appropriate computingdevice, such as the original content provider 104, the resource cachecomponent 128, or both, or sending instructions to the appropriatecomputing device to take a particular action in advance of theanticipated client resource request. This action may include opening acommunications channel, preloading the requested content at the resourcecache component 128 if it is not otherwise available, commencingtranscoding of content into an appropriate format for the anticipatedresource request, and the like. Ultimately, the action can be any actionthat would help speed up processing of an anticipated resource requestfrom a client computing device 102. At block 610, the routine 600terminates.

With reference now to FIG. 7, one embodiment of a subroutine routine 700for implementing one or more pre-processing actions as set forth atblock 608 of FIG. 6 will be described. Specifically, a DNS servercomponent at a service provider, such as the DNS service provider 134 orCDN service provider 106, can utilize pre-processing information toanticipate actions which will be required to respond to a client contentrequest. One skilled in the relevant art will appreciate thatactions/steps outlined for subroutine 700 may be implemented by one ormany computing devices/components that are associated with the DNSservice provider 134 or CDN service provider 106. Additionally, routine700 may be implemented by a combination of components from the DNSservice provider 134 and CDN service provider 106 in embodiments inwhich both service providers share common control or ownership.Accordingly, subroutine 700 has been logically associated as beingperformed by a DNS server component of the DNS service provider 134 orCDN service provider 106.

At a block 702, a DNS server component performs a test to determinewhether the identified pre-processing information includesidentification of cacheable content. For example, the DNS servercomponent identifies the embedded resource that a client computingdevice will request upon resolution of the DNS query. As set forthabove, information about the embedded resource is included in the DNSportion of the resource identifier, and the DNS server componentidentifies this embedded resource by parsing the DNS portion of the DNSquery. Once the embedded resource is identified, the DNS servercomponent identifies whether the embedded resource comprises cacheablecontent. Static content in a Web page, for example, is consideredcacheable, while dynamic content is typically not. Essentially, the DNSserver component is determining whether the embedded resource is likelyto be available at the resource cache component corresponding to the IPaddress provided to the client computing device in response to the DNSquery.

If the answer at block 702 is yes, the DNS server component transmitspre-processing information to the resource cache component. In oneembodiment, the pre-processing information may include instructions orinformation for the resource cache component to perform some preliminaryprocessing action in anticipation of the request from the clientcomputing device for the embedded resource, such as opening of one ormore communications channels between nodes at a POP of the CDN serviceprovider in order to, for example, move content as close as possible toa cache component that will service the anticipated request for content.In another embodiment, the pre-processing information may includeidentification of a format of the embedded resource required to respondto an anticipated request from the client computing device 102 for theembedded resource and/or instructions associated with commencingconversion of the embedded resource into the appropriate format inanticipation of the client request.

If the answer at block 704 is no, processing continues at block 706where the DNS server component performs a test to determine whether theidentified pre-processing information includes identification of anynon-cacheable content, such as content not typically stored by theresource cache component 128 of the CDN service provider 106. This typeof content would need to be obtained by the resource cache component 128of the CDN service provider 106 from another source, such as the originserver 114 of the content provider 114. Dynamic content, for example, isoften considered non-cacheable content in this context.

If the answer at block 706 is yes, the DNS server component transmitspre-processing information to the origin server 114 of the contentprovider 104. In one embodiment, the pre-processing information includesinstructions or identification of the non-cacheable content for theorigin server 114 to preload to the resource cache component 128 inanticipation of a request from the client computing device 102 for thenon-cacheable content. In another embodiment, the pre-processinginformation may simply include instructions or information for theorigin server 114 to open a communications channel with the resourcecache component 128 in anticipation of the request for the non-cacheablecontent from the resource cache component 128. Processing of thesubroutine ends at block 710. In addition, if the answer at block 706 isno, processing of the subroutine also ends at block 710.

It will be appreciated by one skilled in the relevant art that there area number of ways to modify the routing information associated withrequests from a class of client computing devices. It will further beappreciated by one skilled in the relevant art that the timing at whichperformance is monitored and updates to routing information are made canvary.

It will be appreciated by those skilled in the art and others that allof the functions described in this disclosure may be embodied insoftware executed by one or more processors of the disclosed componentsand mobile communication devices. The software may be persistentlystored in any type of non-volatile storage.

Conditional language, such as, among others, “can,” “could,” “might,” or“may,” unless specifically stated otherwise, or otherwise understoodwithin the context as used, is generally intended to convey that certainembodiments include, while other embodiments do not include, certainfeatures, elements and/or steps. Thus, such conditional language is notgenerally intended to imply that features, elements and/or steps are inany way required for one or more embodiments or that one or moreembodiments necessarily include logic for deciding, with or without userinput or prompting, whether these features, elements and/or steps areincluded or are to be performed in any particular embodiment.

Any process descriptions, elements, or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or steps in the process. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, executedout of order from that shown or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved, as would be understood by those skilled in the art. It willfurther be appreciated that the data and/or components described abovemay be stored on a computer-readable medium and loaded into memory ofthe computing device using a drive mechanism associated with a computerreadable storing the computer executable components such as a CD-ROM,DVD-ROM, or network interface further, the component and/or data can beincluded in a single device or distributed in any manner. Accordingly,general purpose computing devices may be configured to implement theprocesses, algorithms and methodology of the present disclosure with theprocessing and/or execution of the various data and/or componentsdescribed above.

It should be emphasized that many variations and modifications may bemade to the above-described embodiments, the elements of which are to beunderstood as being among other acceptable examples. All suchmodifications and variations are intended to be included herein withinthe scope of this disclosure and protected by the following claims.

What is claimed is:
 1. A method comprising: obtaining a DNS query from aclient computing device at a DNS server component, wherein the DNS querycorresponds to a requested resource associated with a resourceidentifier; identifying, at the DNS server component, pre-processinginformation corresponding to the requested resource, wherein thepre-processing information includes information for processing asubsequent request by the client computing device; resolving the DNSquery by selecting a cache server component for providing the requestedresource to the client computing device and transmitting informationidentifying the selected cache server component to the client computingdevice, wherein the DNS server component and the cache server componentare different; and implementing, at the DNS server component, theidentified pre-processing information by transmitting the pre-processinginformation to the selected cache server component or an originalcontent provider in order to process the subsequent request by theclient computing device to the selected cache server component for therequested resource.
 2. The method as recited in claim 1, wherein thepre-processing information includes identification of an origin servercorresponding to the requested resource.
 3. The method as recited inclaim 1, wherein the pre-processing information includes identificationof the requested resource.
 4. The method as recited in claim 3, whereinthe requested resource includes dynamic content.
 5. The method asrecited in claim 4, wherein the pre-processing information includesinstructions to preload the dynamic content.
 6. The method as recited inclaim 5, wherein implementing the identified pre-processing informationcomprises transmitting the instructions to the selected cache servercomponent to preload the dynamic content from an origin server beforethe subsequent request by the client computing device to the selectedcache server component for the requested resource.
 7. The method asrecited in claim 1, wherein the pre-processing information includesinstructions to open a communications channel.
 8. The method as recitedin claim 1, wherein the pre-processing information includes instructionsto commence transcoding the requested resource into the appropriateformat.
 9. A system comprising: a DNS server component implemented by acomputing device, wherein the DNS server component is operable to:obtain a DNS query from a client computing device at a DNS server,wherein the DNS query corresponds to a requested resource associatedwith a resource identifier; identify pre-processing informationcorresponding to the requested resource, wherein the pre-processinginformation includes information for processing a subsequent request bythe client computing device; resolve the DNS query by selecting a cacheserver component for providing the requested resource to the clientcomputing device and transmitting information identifying the selectedcache server component to the client computing device, wherein the DNSserver component and the cache server component are different; andimplement the identified pre-processing information by transmitting thepre-processing information to the selected cache server component or anoriginal content provider in order to process the subsequent request bythe client computing device.
 10. The system as recited in claim 9,wherein the pre-processing information includes identification of anorigin server corresponding to the requested resource.
 11. The system asrecited in claim 9, wherein the pre-processing information includesidentification of the requested resource.
 12. The system as recited inclaim 9, wherein the pre-processing information includes instructions topreload the requested resource.
 13. The system as recited in claim 12,wherein implementing the identified pre-processing information comprisestransmitting the instructions to the selected cache server component topreload the requested resource from an origin server before thesubsequent request by the client computing device to the selected cacheserver component for the requested resource.
 14. The system as recitedin claim 9, wherein the pre-processing information includes instructionsto open a communications channel.
 15. The system as recited in claim 9,wherein the pre-processing information includes instructions to commencetranscoding the requested resource into the appropriate format.
 16. Thesystem as recited in claim 9, wherein implementing the identifiedpre-processing information further comprises determining whether therequested resource is cacheable.
 17. The system as recited in claim 16,wherein implementing the identified pre-processing information furthercomprises transmitting instructions to the selected cache servercomponent to open a communications channel between two or more nodes ofa content delivery network associated with the selected cache servercomponent if the requested resource is determined to be cacheable. 18.The system as recited in claim 16, wherein implementing the identifiedpre-processing information further comprises transmitting instructionsto the selected cache server component to open a communications channelbetween the selected cache server component and an origin server of theoriginal content provider if the requested resource is determined not tobe cacheable.
 19. The system as recited in claim 16, whereinimplementing the identified pre-processing information further comprisestransmitting instructions to the original content provider to open acommunications channel between an origin server of the original contentprovider and the selected cache server component if the requestedresource is determined not to be cacheable.
 20. The system as recited inclaim 16, wherein implementing the identified pre-processing informationfurther comprises transmitting instructions to the selected cache servercomponent to preload the requested resource from the original contentprovider if the requested resource is determined not to be cacheable.